﻿using PLCS.Domain.Shared.Tasks;

namespace PLCS.Application.Contracts.TaskApp.Dtos;

public class TaskDto : EntityDto<Guid>
{
    /// <summary>
    /// 任务号
    /// </summary>
    ///
    public int TaskId { get; set; }

    /// <summary>
    /// 工单号
    /// </summary>
    public string OrderNo { get; set; }

    /// <summary>
    /// 任务级别
    /// </summary>
    public int Level { get; set; }

    /// <summary>
    /// 托盘编号
    /// </summary>
    public string TrayNo { get; set; }

    /// <summary>
    /// 任务来源
    /// </summary>
    public string TaskSource { get; set; }

    /// <summary>
    /// 任务类型
    /// </summary>
    public TaskType TaskType { get; set; }

    /// <summary>
    /// 任务起始位
    /// </summary>
    public string StartPos { get; set; }

    /// <summary>
    /// 任务目标位
    /// </summary>
    public string EndPos { get; set; }

    /// <summary>
    /// 途径点
    /// </summary>
    public string WayStation { get; set; }

    /// <summary>
    /// 执行前方法
    /// </summary>
    public string BeforeExecutionMethod { get; set; }

    /// <summary>
    /// 执行完成后方法
    /// </summary>
    public string AfterExecutionMethod { get; set; }

    /// <summary>
    /// 托盘类型
    /// </summary>
    public TrayType TrayType { get; set; }

    /// <summary>
    /// 执行状态
    /// </summary>
    public Domain.Shared.Tasks.TaskStatus TaskStatus { get; set; }

    /// <summary>
    /// 备注
    /// </summary>
    public string? Remark { get; set; }

    /// <summary>
    /// 创建时间
    /// </summary>
    public DateTime CreationTime { get; set; }

    public IEnumerable<InstructionDto> Instructions { get; set; }
}